package visual;

import javax.swing.JPanel;
import javax.swing.JLabel;

import java.awt.Color;
import java.awt.Rectangle;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JPasswordField;
import basicas.Endereco;
import basicas.PessoaFisica;
import basicas.PessoaJuridica;

import colecoes.ColEndereco;
import colecoes.ColPessoaFisica;
import colecoes.ColPessoaJuridica;
import colecoes.ValidaCnpj;
import colecoes.ValidaCpf;

import java.sql.SQLException;
import javax.swing.text.MaskFormatter;

import fachada.Fachada;

public class CadastrarPessoaJuridica extends JPanel {

	private static final long serialVersionUID = 1L;
	private JTabbedPane jTabbedPane = null;
	private JPanel jPanel = null;
	private JPanel jPanel1 = null;
	private JLabel lblNome = null;
	private JTextField txtNome = null;
	private JLabel lblEndereco = null;
	private JTextField txtEndereco = null;
	private JLabel lblCadastraUser = null;
	private JLabel lblIcoUser = null;
	private JLabel lblTelefone = null;
	private JTextField txtTelefone = null;
	private JLabel lblCelular = null;
	private JTextField txtcelular = null;
	private JLabel lblCadUser = null;
	private JLabel lblBairro = null;
	private JTextField txtBairro = null;
	private JLabel lblCidade = null;
	private JTextField txtCidade = null;
	private JLabel lblEstado = null;
	private JComboBox cbxEstado = null;
	private JLabel lblLogin = null;
	private JTextField txtLogin = null;
	private JLabel lblSenha = null;
	private JPasswordField psswdSenha = null;
	private JLabel txtReptSenha = null;
	private JPasswordField psswdReptSenha = null;
	private JLabel lblVerificaSenha = null;
	private JLabel lblEmail = null;
	private JTextField txtEmail = null;
	private JLabel lblCNPJ = null;
	private JTextField txtCNPJ = null;
	private JButton btnNovo = null;
	private JButton btnLimpar = null;
	private JButton btnEnviar = null;
	private JLabel lblRazaoSocial = null;
	private JTextField txtRazaoSocial = null;
	private JTable jTable = null;
	private JLabel lblCEP = null;
	private JTextField txtCEP = null;
	private JTextField txtCodPesFisic = null;
	private JLabel lblCod = null;
	private JLabel lblCodigo = null;
	private JTextField txtCodEnd = null;
	private JLabel lblbanner = null;
	private JPanel painelDadosEnd = null;
	private JPanel painelDadosPessoais = null;
	private JPanel painelLogin = null;
	private JLabel lblNomeFantasia = null;
	private JTextField txtNomeFantasia = null;
	
	public CadastrarPessoaJuridica() {
		super();
		initialize();
	}

	
	private void initialize() {
		this.setSize(1094, 725);
		this.setLayout(null);
		this.add(getJTabbedPane(), null);
		txtCodEnd.setEditable(false);
		txtCodPesFisic.setEditable(false);
		desabilitar();
	}

	private JTabbedPane getJTabbedPane() {
		if (jTabbedPane == null) {
			jTabbedPane = new JTabbedPane();
			jTabbedPane.setBounds(new Rectangle(5, 5, 1085, 716));
			jTabbedPane.addTab("Endereço da Empresa", null, getJPanel1(), null);
			jTabbedPane.addTab("Dados da Empresa", null, getJPanel(), "");

		}
		return jTabbedPane;
	}

	private JPanel getJPanel() {
		if (jPanel == null) {
			lblCod = new JLabel();
			lblCod.setText("Codigo:");
			lblCod.setBounds(new Rectangle(23, 78, 62, 15));
			lblRazaoSocial = new JLabel();
			lblRazaoSocial.setText("Razão Social:");
			lblRazaoSocial.setBounds(new Rectangle(14, 275, 104, 15));
			lblCNPJ = new JLabel();
			lblCNPJ.setText("CNPJ:");
			lblCNPJ.setBounds(new Rectangle(298, 80, 43, 15));
			lblEmail = new JLabel();
			lblEmail.setText("E-mail:");
			lblEmail.setBounds(new Rectangle(20, 244, 67, 15));
			lblVerificaSenha = new JLabel();
			lblVerificaSenha.setText("");
			lblVerificaSenha.setBounds(new Rectangle(264, 184, 152, 15));
			txtReptSenha = new JLabel();
			txtReptSenha.setText("Repita a Senha:");
			txtReptSenha.setBounds(new Rectangle(14, 143, 119, 15));
			lblSenha = new JLabel();
			lblSenha.setText("Senha:");
			lblSenha.setBounds(new Rectangle(71, 85, 57, 15));
			lblLogin = new JLabel();
			lblLogin.setText("Login:");
			lblLogin.setBounds(new Rectangle(75, 35, 53, 15));
			lblCelular = new JLabel();
			lblCelular.setFont(new Font("Dialog", Font.BOLD, 12));
			lblCelular.setBounds(new Rectangle(15, 229, 86, 15));
			lblCelular.setText("Celular:");
			lblTelefone = new JLabel();
			lblTelefone.setText("Telefone:");
			lblTelefone.setBounds(new Rectangle(17, 182, 85, 15));
			lblIcoUser = new JLabel();
			lblIcoUser.setBounds(new Rectangle(763, 73, 59, 72));
			lblIcoUser.setIcon(new ImageIcon(getClass().getResource(
					"/Icones/Usuarios/cliente/user-icon3.png")));
			lblIcoUser.setText("");
			lblCadastraUser = new JLabel();
			lblCadastraUser.setBounds(new Rectangle(456, 100, 207, 15));
			lblCadastraUser.setFont(new Font("DejaVu Sans Condensed",
					Font.BOLD, 18));
			lblCadastraUser.setText("Cadastro de Clientes");
			lblNome = new JLabel();
			lblNome.setText("Nome:");
			lblNome.setBounds(new Rectangle(27, 126, 58, 15));
			jPanel = new JPanel();
			jPanel.setLayout(null);
			jPanel.setToolTipText("");
			jPanel.add(lblCadastraUser, null);
			jPanel.add(lblIcoUser, null);
			jPanel.add(getBtnNovo(), null);
			jPanel.add(getBtnLimpar(), null);
			jPanel.add(getBtnEnviar(), null);
			jPanel.add(getPainelDadosPessoais(), null);
			jPanel.add(getPainelLogin(), null);

		}
		return jPanel;
	}

	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			lblbanner = new JLabel();
			lblbanner.setBounds(new Rectangle(12, 3, 1059, 202));
			lblbanner.setIcon(new ImageIcon("/home/linux/banner/banner3.jpg"));
			lblbanner.setText("");
			lblCodigo = new JLabel();
			lblCodigo.setText("Codigo:");
			lblCodigo.setBounds(new Rectangle(44, 44, 68, 15));
			lblCEP = new JLabel();
			lblCEP.setText("CEP:");
			lblCEP.setBounds(new Rectangle(729, 64, 43, 15));
			lblEstado = new JLabel();
			lblEstado.setText("Estado:");
			lblEstado.setBounds(new Rectangle(712, 180, 72, 15));
			lblCidade = new JLabel();
			lblCidade.setText("Cidade:");
			lblCidade.setBounds(new Rectangle(46, 261, 58, 15));
			lblBairro = new JLabel();
			lblBairro.setText("Bairro:");
			lblBairro.setBounds(new Rectangle(46, 185, 57, 15));
			lblCadUser = new JLabel();
			lblCadUser.setText("Cadastro de Clientes");
			lblCadUser.setLocation(new Point(407, 269));
			lblCadUser.setSize(new Dimension(324, 39));
			lblCadUser.setFont(new Font("DejaVu Serif", Font.BOLD, 24));
			lblEndereco = new JLabel();
			lblEndereco.setText("Endereço:");
			lblEndereco.setBounds(new Rectangle(46, 106, 73, 15));
			jPanel1 = new JPanel();
			jPanel1.setLayout(null);
			jPanel1.add(lblCadUser, null);
			jPanel1.add(lblbanner, null);
			jPanel1.add(getPainelDadosEnd(), null);
		}
		return jPanel1;
	}

	private JTextField getTxtNome() {
		if (txtNome == null) {
			txtNome = new JTextField();
			txtNome.setBounds(new Rectangle(111, 126, 415, 19));
		}
		return txtNome;
	}

	private JTextField getTxtEndereco() {
		if (txtEndereco == null) {
			txtEndereco = new JTextField();
			txtEndereco.setBounds(new Rectangle(135, 106, 220, 19));
		}
		return txtEndereco;
	}

	private MaskFormatter setMascara(String mascara) {
		MaskFormatter mask = null;
		try {
			mask = new MaskFormatter(mascara);
			mask.setPlaceholderCharacter('_');
		} catch (java.text.ParseException exc) {
		}
		return mask;
	}

	private JFormattedTextField getTxtTelefone() {
		if (txtTelefone == null) {
			txtTelefone = new JFormattedTextField(setMascara("(##)####-####"));
			txtTelefone.setBounds(new Rectangle(111, 174, 100, 19));
		}
		return (JFormattedTextField) txtTelefone;
	}

	private JFormattedTextField getTxtcelular() {
		if (txtcelular == null) {
			txtcelular = new JFormattedTextField(setMascara("(##)####-####"));
			txtcelular.setBounds(new Rectangle(115, 227, 100, 19));
		}
		return (JFormattedTextField) txtcelular;
	}

	private JTextField getTxtBairro() {
		if (txtBairro == null) {
			txtBairro = new JTextField();
			txtBairro.setBounds(new Rectangle(135, 184, 220, 19));
		}
		return txtBairro;
	}

	private JTextField getTxtCidade() {
		if (txtCidade == null) {
			txtCidade = new JTextField();
			txtCidade.setBounds(new Rectangle(138, 262, 226, 19));
		}
		return txtCidade;
	}

	private JComboBox getCbxEstado() {
		if (cbxEstado == null) {
			cbxEstado = new JComboBox();
			cbxEstado.setBounds(new Rectangle(816, 177, 94, 24));
			cbxEstado.addItem("  ");
			cbxEstado.addItem("AC");
			cbxEstado.addItem("AL");
			cbxEstado.addItem("AP");
			cbxEstado.addItem("AM");
			cbxEstado.addItem("BA");
			cbxEstado.addItem("CE");
			cbxEstado.addItem("DF");
			cbxEstado.addItem("ES");
			cbxEstado.addItem("GO");
			cbxEstado.addItem("MA");
			cbxEstado.addItem("MT");
			cbxEstado.addItem("MS");
			cbxEstado.addItem("MG");
			cbxEstado.addItem("PA");
			cbxEstado.addItem("PB");
			cbxEstado.addItem("PR");
			cbxEstado.addItem("PE");
			cbxEstado.addItem("PI");
			cbxEstado.addItem("RJ");
			cbxEstado.addItem("RN");
			cbxEstado.addItem("RS");
			cbxEstado.addItem("RO");
			cbxEstado.addItem("SC");
			cbxEstado.addItem("SP");
			cbxEstado.addItem("SE");
			cbxEstado.addItem("TO");
		}
		return cbxEstado;
	}

	private JTextField getTxtLogin() {
		if (txtLogin == null) {
			txtLogin = new JTextField();
			txtLogin.setBounds(new Rectangle(143, 33, 168, 19));
		}
		return txtLogin;
	}

	private JPasswordField getPsswdSenha() {
		if (psswdSenha == null) {
			psswdSenha = new JPasswordField();
			psswdSenha.setBounds(new Rectangle(140, 85, 165, 19));
		}
		return psswdSenha;
	}

	private JPasswordField getPsswdReptSenha() {
		if (psswdReptSenha == null) {
			psswdReptSenha = new JPasswordField();
			psswdReptSenha.setBounds(new Rectangle(141, 139, 165, 19));
		}
		return psswdReptSenha;
	}

	private JTextField getTxtEmail() {
		if (txtEmail == null) {
			txtEmail = new JTextField();
			txtEmail.setBounds(new Rectangle(110, 242, 214, 19));
		}
		return txtEmail;
	}

	private JFormattedTextField getTxtCNPJ() {
		if (txtCNPJ == null) {
			txtCNPJ = new JFormattedTextField(setMascara("##.###.###/####-##"));
			txtCNPJ.setBounds(new Rectangle(361, 80, 140, 19));
		}
		return (JFormattedTextField) txtCNPJ;
	}

	private JButton getBtnNovo() {
		if (btnNovo == null) {
			btnNovo = new JButton();
			btnNovo.setBounds(new Rectangle(40, 587, 86, 24));
			btnNovo.setText("Novo");
			btnNovo.addActionListener(new java.awt.event.ActionListener() {

				public void actionPerformed(java.awt.event.ActionEvent e) {
					habilitar();

				}
			});
		}
		return btnNovo;
	}
	
	public void desabilitar() {
		txtNome.setEditable(false);
		txtTelefone.setEditable(false);
		txtcelular.setEditable(false);
		txtEmail.setEditable(false);
		txtLogin.setEditable(false);
		psswdSenha.setEditable(false);
		psswdReptSenha.setEditable(false);
		txtCNPJ.setEditable(false);
		txtRazaoSocial.setEditable(false);
		txtEndereco.setEditable(false);
		txtBairro.setEditable(false);
		txtCidade.setEditable(false);
		txtCEP.setEditable(false);
		cbxEstado.setEditable(false);
		txtNomeFantasia.setEditable(false);
	}

	public void habilitar() {
		txtNome.setEditable(true);
		txtTelefone.setEditable(true);
		txtcelular.setEditable(true);
		txtEmail.setEditable(true);
		txtLogin.setEditable(true);
		psswdSenha.setEditable(true);
		psswdReptSenha.setEditable(true);
		txtCNPJ.setEditable(true);
		txtRazaoSocial.setEditable(true);
		txtEndereco.setEditable(true);
		txtBairro.setEditable(true);
		txtCidade.setEditable(true);
		txtCEP.setEditable(true);
		cbxEstado.setEditable(true);
		txtNomeFantasia.setEditable(true);
	}
	
	private JButton getBtnLimpar() {
		if (btnLimpar == null) {
			btnLimpar = new JButton();
			btnLimpar.setBounds(new Rectangle(390, 590, 86, 24));
			btnLimpar.setText("Limpar");
			btnLimpar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					txtNome.setText("");
					txtTelefone.setText("");
					txtcelular.setText("");
					txtEmail.setText("");
					txtLogin.setText("");
					psswdSenha.setText("");
					psswdReptSenha.setText("");
					txtCNPJ.setText("");
					txtRazaoSocial.setText("");
					txtEndereco.setText("");
					txtBairro.setText("");
					txtCidade.setText("");
					txtCEP.setText("");
					cbxEstado.setToolTipText("");
				}
			});
		}
		return btnLimpar;
	}

	private JButton getBtnEnviar() {
		if (btnEnviar == null) {
			btnEnviar = new JButton();
			btnEnviar.setBounds(new Rectangle(765, 591, 86, 24));
			btnEnviar.setText("Enviar");
			btnEnviar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					boolean valido;
					Fachada F = new Fachada();
					Endereco end = new Endereco();

					try {
						end.setCodEndereco(F.valorDoEndereco());
					} catch (ClassNotFoundException e2) {
						e2.printStackTrace();
					} catch (SQLException e2) {
						e2.printStackTrace();
					}

					PessoaJuridica pJuridica = new PessoaJuridica();
					pJuridica.setEmail(txtEmail.getText());

					pJuridica.setEnd(end);

					pJuridica.setTelefone(txtTelefone.getText());
					pJuridica.setTelefone2(txtcelular.getText());
					pJuridica.setRazaoSocial(txtRazaoSocial.getText());
					pJuridica.setNomeFantasia(txtNomeFantasia.getText());
					// Valida CNPJ
					ValidaCnpj cnpj = new ValidaCnpj();
					valido = cnpj.validaCnpj(txtCNPJ.getText());
					if (!valido)
						JOptionPane.showConfirmDialog(null,
								"    Ops....  Este CNPJ Está Inválido  !!!!",
								"Atenção", JOptionPane.CLOSED_OPTION,
								JOptionPane.WARNING_MESSAGE);
					else
						pJuridica.setCnpj(txtCNPJ.getText());
					pJuridica.setNomeContrato(txtNome.getText());
					pJuridica.setLogin(txtLogin.getText());
					// Verifica se as senhas são iguais
					if (!verificaSenha(psswdSenha.getText())) {
						pJuridica.setSenha(psswdSenha.getText());
					}

					try {
						F.cadastrarPessoaJuridica(pJuridica);
					} catch (ClassNotFoundException e1) {

						e1.printStackTrace();
					} catch (SQLException e1) {

						e1.printStackTrace();
					}

					Endereco nd = new Endereco();
					nd.setLogradouro(txtEndereco.getText());
					nd.setBairro(txtBairro.getText());
					nd.setCidade(txtCidade.getText());
					nd.setCep(txtCEP.getText());
					nd.setEstado(cbxEstado.getSelectedItem().toString());

					try {
						F.cadastrarEndereco(nd);
					} catch (ClassNotFoundException e1) {

						e1.printStackTrace();
					} catch (SQLException e1) {

						e1.printStackTrace();
					}
				}
			});
		}
		return btnEnviar;
	}
	
	public boolean verificaSenha(String senha) {
		if (senha.equals(psswdReptSenha.getText())) {
			return true;
		}
		lblVerificaSenha.setForeground(Color.red);
		lblVerificaSenha.setText("Senha não confere");
		return false;
	}

	private JTextField getTxtRazaoSocial() {
		if (txtRazaoSocial == null) {
			txtRazaoSocial = new JTextField();
			txtRazaoSocial.setBounds(new Rectangle(131, 274, 393, 19));
		}
		return txtRazaoSocial;
	}

	private JFormattedTextField getTxtCEP() {
		if (txtCEP == null) {
			txtCEP = new JFormattedTextField(setMascara("##.###-###"));
			txtCEP.setBounds(new Rectangle(801, 59, 80, 19));
		}
		return (JFormattedTextField) txtCEP;
	}

	private JTextField getTxtCodPesFisic() {
		if (txtCodPesFisic == null) {
			txtCodPesFisic = new JTextField();
			txtCodPesFisic.setBounds(new Rectangle(108, 77, 34, 19));
		}
		return txtCodPesFisic;
	}

	private JTextField getTxtCodEnd() {
		if (txtCodEnd == null) {
			txtCodEnd = new JTextField();
			txtCodEnd.setBounds(new Rectangle(134, 41, 30, 19));
		}
		return txtCodEnd;
	}

	private JPanel getPainelDadosEnd() {
		if (painelDadosEnd == null) {
			painelDadosEnd = new JPanel();
			painelDadosEnd.setLayout(null);
			painelDadosEnd.setBounds(new Rectangle(40, 346, 996, 323));

			painelDadosEnd.setBorder(BorderFactory.createCompoundBorder(
					BorderFactory.createTitledBorder("Dados do Endereço: "),
					BorderFactory.createEmptyBorder(5, 5, 5, 5)));
			painelDadosEnd.add(getCbxEstado(), null);
			painelDadosEnd.add(lblEstado, null);
			painelDadosEnd.add(lblCEP, null);
			painelDadosEnd.add(getTxtCEP(), null);
			painelDadosEnd.add(lblEndereco, null);
			painelDadosEnd.add(getTxtCidade(), null);
			painelDadosEnd.add(getTxtBairro(), null);
			painelDadosEnd.add(getTxtEndereco(), null);
			painelDadosEnd.add(lblBairro, null);
			painelDadosEnd.add(lblCidade, null);
			painelDadosEnd.add(getTxtCodEnd(), null);
			painelDadosEnd.add(lblCodigo, null);
		}
		return painelDadosEnd;
	}

	private JPanel getPainelDadosPessoais() {
		if (painelDadosPessoais == null) {
			lblNomeFantasia = new JLabel();
			lblNomeFantasia.setBounds(new Rectangle(16, 321, 117, 15));
			lblNomeFantasia.setText("Nome Fantasia:");
			painelDadosPessoais = new JPanel();
			painelDadosPessoais.setLayout(null);
			painelDadosPessoais.setBounds(new Rectangle(20, 218, 551, 358));
			painelDadosPessoais.setBorder(BorderFactory.createCompoundBorder(
					BorderFactory.createTitledBorder("Dados Principais: "),
					BorderFactory.createEmptyBorder(5, 5, 5, 5)));
			painelDadosPessoais.add(getTxtCodPesFisic(), null);
			painelDadosPessoais.add(lblCod, null);
			painelDadosPessoais.add(getTxtNome(), null);
			painelDadosPessoais.add(lblNome, null);
			painelDadosPessoais.add(getTxtTelefone(), null);
			painelDadosPessoais.add(lblTelefone, null);
			painelDadosPessoais.add(getTxtcelular(), null);
			painelDadosPessoais.add(lblCelular, null);
			painelDadosPessoais.add(lblCNPJ, null);
			painelDadosPessoais.add(getTxtCNPJ(), null);
			painelDadosPessoais.add(lblRazaoSocial, null);
			painelDadosPessoais.add(getTxtRazaoSocial(), null);
			painelDadosPessoais.add(lblNomeFantasia, null);
			painelDadosPessoais.add(getTxtNomeFantasia(), null);
			painelDadosPessoais.add(txtTelefone, null);
		}
		return painelDadosPessoais;
	}

	private JPanel getPainelLogin() {
		if (painelLogin == null) {
			painelLogin = new JPanel();
			painelLogin.setLayout(null);
			painelLogin.setBounds(new Rectangle(588, 211, 446, 309));
			painelLogin.setBorder(BorderFactory.createCompoundBorder(
					BorderFactory.createTitledBorder("Dados do Login: "),
					BorderFactory.createEmptyBorder(5, 5, 5, 5)));
			painelLogin.add(getTxtEmail(), null);
			painelLogin.add(lblEmail, null);
			painelLogin.add(lblVerificaSenha, null);
			painelLogin.add(txtReptSenha, null);
			painelLogin.add(getPsswdReptSenha(), null);
			painelLogin.add(getPsswdSenha(), null);
			painelLogin.add(lblSenha, null);
			painelLogin.add(getTxtLogin(), null);
			painelLogin.add(lblLogin, null);
		}
		return painelLogin;
	}

	private JTextField getTxtNomeFantasia() {
		if (txtNomeFantasia == null) {
			txtNomeFantasia = new JTextField();
			txtNomeFantasia.setBounds(new Rectangle(149, 321, 374, 19));
		}
		return txtNomeFantasia;
	}
}
